<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilflash: xilflash.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilflash
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xilflash_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xilflash.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains the library functions to Initialize, Read, Write, Erase, Lock and Unlock the Parallel Flash Device. </p>
<p>The family specific functionalities are implemented in DeviceControl API. Refer <a class="el" href="xilflash_8h.html">xilflash.h</a> for detailed description.</p>
<dl class="section note"><dt>Note</dt><dd>None</dd></dl>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date     Changes
</p>
<hr/>
<p>
1.00a rmm  10/20/07 First release
1.00a mta  10/25/07 Updated to flash library
1.01a ksu  04/10/08 Added support for AMD CFI Interface
1.02a ksu  06/16/09 Added support for multiple banks in Intel flash.
                    Added support for Xilinx Platform Flash XL. If the
                    user selects to use the Xilinx Platform Flash XL then
                    it is set to Async mode during the initialization.
                    If the user wants to use it in Sync mode then it can be
                    done using the XFlash_DeviceControl API.
2.00a ktn  12/04/09 Updated to use the HAL processor APIs/macros.
3.00a sdm  03/03/11 Removed static parameters in mld and updated code to
              determine these parameters from the CFI data.
3.01a srt  03/02/12 Added support for Micron G18 Flash device to fix
              CRs 648372, 648282.
3.02a srt  05/30/12 Changed Implementation for Micron G18 Flash, which
              fixes the CR 662317.
              CR 662317 Description - Xilinx Platform Flash on ML605
              fails to work.
4.4   ms   08/03/17 Added tags and modified comment lines style for doxygen.
4.10    akm  07/14/23 Added support for system device-tree flow.
</pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gab4c908ad78f6ded9407d0dc7ed611370"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#gab4c908ad78f6ded9407d0dc7ed611370">XFlash_Initialize</a> (XFlash *InstancePtr, u32 BaseAddress, u8 BusWidth, int IsPlatformFlash)</td></tr>
<tr class="memdesc:gab4c908ad78f6ded9407d0dc7ed611370"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function initializes a specific XFlash instance.  <a href="group__xilflash__apis.html#gab4c908ad78f6ded9407d0dc7ed611370">More...</a><br/></td></tr>
<tr class="separator:gab4c908ad78f6ded9407d0dc7ed611370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2b079c7388012f6bdbda754ea0d62641"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#ga2b079c7388012f6bdbda754ea0d62641">XFlash_Read</a> (XFlash *InstancePtr, u32 Offset, u32 Bytes, void *DestPtr)</td></tr>
<tr class="memdesc:ga2b079c7388012f6bdbda754ea0d62641"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the data from the Flash device and copies it into the specified user buffer.  <a href="group__xilflash__apis.html#ga2b079c7388012f6bdbda754ea0d62641">More...</a><br/></td></tr>
<tr class="separator:ga2b079c7388012f6bdbda754ea0d62641"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadeef4a4805428c7a14578bc0790d6bdc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#gadeef4a4805428c7a14578bc0790d6bdc">XFlash_Write</a> (XFlash *InstancePtr, u32 Offset, u32 Bytes, void *SrcPtr)</td></tr>
<tr class="memdesc:gadeef4a4805428c7a14578bc0790d6bdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function programs the flash device(s) with data specified in the user buffer.  <a href="group__xilflash__apis.html#gadeef4a4805428c7a14578bc0790d6bdc">More...</a><br/></td></tr>
<tr class="separator:gadeef4a4805428c7a14578bc0790d6bdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13e5d44757867a2f424f885ac51890c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#ga13e5d44757867a2f424f885ac51890c2">XFlash_Erase</a> (XFlash *InstancePtr, u32 Offset, u32 Bytes)</td></tr>
<tr class="memdesc:ga13e5d44757867a2f424f885ac51890c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function erases the specified address range in the flash device.  <a href="group__xilflash__apis.html#ga13e5d44757867a2f424f885ac51890c2">More...</a><br/></td></tr>
<tr class="separator:ga13e5d44757867a2f424f885ac51890c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga61597f564c68519fd4449b9fe6c50339"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#ga61597f564c68519fd4449b9fe6c50339">XFlash_Lock</a> (XFlash *InstancePtr, u32 Offset, u32 Bytes)</td></tr>
<tr class="memdesc:ga61597f564c68519fd4449b9fe6c50339"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function Locks the blocks in the specified range of the flash device(s).  <a href="group__xilflash__apis.html#ga61597f564c68519fd4449b9fe6c50339">More...</a><br/></td></tr>
<tr class="separator:ga61597f564c68519fd4449b9fe6c50339"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad42077db3972cee5f052a5a5063fe538"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#gad42077db3972cee5f052a5a5063fe538">XFlash_Unlock</a> (XFlash *InstancePtr, u32 Offset, u32 Bytes)</td></tr>
<tr class="memdesc:gad42077db3972cee5f052a5a5063fe538"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function Unlocks the blocks in the specified range of the flash device(s).  <a href="group__xilflash__apis.html#gad42077db3972cee5f052a5a5063fe538">More...</a><br/></td></tr>
<tr class="separator:gad42077db3972cee5f052a5a5063fe538"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacef8005e70142f8113fa163cb5a187f5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#gacef8005e70142f8113fa163cb5a187f5">XFlash_Reset</a> (XFlash *InstancePtr)</td></tr>
<tr class="memdesc:gacef8005e70142f8113fa163cb5a187f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function resets the flash device and places it in read mode.  <a href="group__xilflash__apis.html#gacef8005e70142f8113fa163cb5a187f5">More...</a><br/></td></tr>
<tr class="separator:gacef8005e70142f8113fa163cb5a187f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaee7e52b5702a9d346c97ceb56fd4829c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#gaee7e52b5702a9d346c97ceb56fd4829c">XFlash_DeviceControl</a> (XFlash *InstancePtr, u32 Command, DeviceCtrlParam *Parameters)</td></tr>
<tr class="memdesc:gaee7e52b5702a9d346c97ceb56fd4829c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to execute device specific commands.  <a href="group__xilflash__apis.html#gaee7e52b5702a9d346c97ceb56fd4829c">More...</a><br/></td></tr>
<tr class="separator:gaee7e52b5702a9d346c97ceb56fd4829c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58e08e78cda5a44e67a7ec99fab303d0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilflash__apis.html#ga58e08e78cda5a44e67a7ec99fab303d0">XFlash_IsReady</a> (XFlash *InstancePtr)</td></tr>
<tr class="memdesc:ga58e08e78cda5a44e67a7ec99fab303d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function checks the readiness of the device, which means it has been successfully initialized.  <a href="group__xilflash__apis.html#ga58e08e78cda5a44e67a7ec99fab303d0">More...</a><br/></td></tr>
<tr class="separator:ga58e08e78cda5a44e67a7ec99fab303d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a970076e466d58e0fb4ce774f976c5235"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilflash_8c.html#a970076e466d58e0fb4ce774f976c5235">XFlashGeometry_ToAbsolute</a> (XFlashGeometry *InstancePtr, u16 Region, u16 Block, u32 BlockOffset, u32 *AbsoluteOffsetPtr)</td></tr>
<tr class="memdesc:a970076e466d58e0fb4ce774f976c5235"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts block coordinates to a part offset.  <a href="#a970076e466d58e0fb4ce774f976c5235">More...</a><br/></td></tr>
<tr class="separator:a970076e466d58e0fb4ce774f976c5235"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92e6868ccf4e790626f9ebbe4421f534"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilflash_8c.html#a92e6868ccf4e790626f9ebbe4421f534">XFlashGeometry_ToBlock</a> (XFlashGeometry *InstancePtr, u32 AbsoluteOffset, u16 *RegionPtr, u16 *BlockPtr, u32 *BlockOffsetPtr)</td></tr>
<tr class="memdesc:a92e6868ccf4e790626f9ebbe4421f534"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts part offset block coordinates.  <a href="#a92e6868ccf4e790626f9ebbe4421f534">More...</a><br/></td></tr>
<tr class="separator:a92e6868ccf4e790626f9ebbe4421f534"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a970076e466d58e0fb4ce774f976c5235"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XFlashGeometry_ToAbsolute </td>
          <td>(</td>
          <td class="paramtype">XFlashGeometry *&#160;</td>
          <td class="paramname"><em>InstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>Region</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>Block</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>BlockOffset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32 *&#160;</td>
          <td class="paramname"><em>AbsoluteOffsetPtr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Converts block coordinates to a part offset. </p>
<p>Region, Block, &amp; BlockOffset are converted to PartOffset</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">InstancePtr</td><td>is the pointer to the XFlash instance. </td></tr>
    <tr><td class="paramname">Region</td><td>is the erase region the physical address appears in. </td></tr>
    <tr><td class="paramname">Block</td><td>is the block within Region the physical address appears in. </td></tr>
    <tr><td class="paramname">BlockOffset</td><td>is the offset within Block where the physical address appears. </td></tr>
    <tr><td class="paramname">AbsoluteOffsetPtr</td><td>is the returned offset value.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS if successful.</li>
<li>XFLASH_ADDRESS_ERROR if the block coordinates are invalid.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

</div>
</div>
<a class="anchor" id="a92e6868ccf4e790626f9ebbe4421f534"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XFlashGeometry_ToBlock </td>
          <td>(</td>
          <td class="paramtype">XFlashGeometry *&#160;</td>
          <td class="paramname"><em>InstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>AbsoluteOffset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16 *&#160;</td>
          <td class="paramname"><em>RegionPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16 *&#160;</td>
          <td class="paramname"><em>BlockPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32 *&#160;</td>
          <td class="paramname"><em>BlockOffsetPtr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Converts part offset block coordinates. </p>
<p>PartOffset is converted to Region, Block &amp; BlockOffset</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">InstancePtr</td><td>is the pointer to the XFlashGeometry. </td></tr>
    <tr><td class="paramname">AbsoluteOffset</td><td>is the offset within part to find block coordinates for. </td></tr>
    <tr><td class="paramname">RegionPtr</td><td>is the region that corresponds to AbsoluteOffset. This is a return parameter. </td></tr>
    <tr><td class="paramname">BlockPtr</td><td>is the block within Region that corresponds to AbsoluteOffset. This is a return parameter. </td></tr>
    <tr><td class="paramname">BlockOffsetPtr</td><td>is the offset within Block that corresponds to AbsoluteOffset. This is a return parameter.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS if successful.</li>
<li>XFLASH_ADDRESS_ERROR if the block coordinates are invalid.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
